home *** CD-ROM | disk | FTP | other *** search
- #include <Quickdraw.h>
- #include <Dialogs.h>
- #include <Memory.h>
- #include <Errors.h>
-
- #include "sortWindow.h"
- #include "sortMenus.h"
- #include "sort.h"
- #include "notif.h"
- #include "acur.h"
-
- #define ALRT_OUT_OF_MEM 132
-
- #define MINVAL 1
- #define HILITEDELAYVAL 0L
- #define UNHILITEDELAYVAL 0L
-
- long *sortdata = NULL;
- long numdataitems = 50;
- unsigned long numcompares = 0, numexchanges = 0;
- long mindataval = MINVAL, maxdataval = 500;
- long hilitedelay = HILITEDELAYVAL, unhilitedelay = UNHILITEDELAYVAL;
- Boolean hilite_exchange = false;
- Boolean hilite_compare = false;
- static long old_numdata = -1;
- Boolean data_sorted;
-
-
- OSErr init_data(long maxdata)
- {
- long count;
-
- if ((maxdata != old_numdata) && (sortdata != NULL)) {
- DisposPtr((Ptr)sortdata);
- sortdata = NULL;
- data_sorted = true;
- }
-
- if (maxdata != old_numdata) {
- sortdata = (long*) NewPtr(maxdata * sizeof(long));
- data_sorted = true;
- }
-
- if (sortdata == NULL) {
- if (gInBackground) {
- wait_Foreground(1);
- }
- Alert(ALRT_OUT_OF_MEM,NULL);
- return mFulErr;
- }
- old_numdata = maxdata;
- for (count = 0; count < maxdata; count++) {
- if (data_sorted == true) {
- eraseitem(count);
- sortdata[count] = ((Random() + 32768) % (maxdataval - mindataval + 1)) + mindataval;
- drawitem(count);
- }
- }
- data_sorted = false;
- return noErr;
- }
-
-
- short compare(long ino1, long ino2, long i1, long i2)
- {
- // HandleEvent();
- SpinCursor();
-
- if (hilite_compare) {
- myHilite(ino1);
- myHilite(ino2);
- do_hilitedelay();
-
- unhilite(ino1);
- unhilite(ino2);
- do_unhilitedelay();
- }
- numcompares++;
-
- if (i1 > i2)
- return 1;
- if (i1 < i2)
- return -1;
- return 0;
- }
-
- void swap(long item1, long item2, long* pitem1, long* pitem2)
- {
- long temp;
-
- // HandleEvent();
- SpinCursor();
-
- if (hilite_exchange) {
- myHilite(item1);
- myHilite(item2);
- do_hilitedelay();
- }
-
- eraseitem(item1);
- eraseitem(item2);
-
- temp = *pitem1;
- *pitem1 = *pitem2;
- *pitem2 = temp;
-
- if (hilite_exchange) {
- myHilite(item1);
- myHilite(item2);
-
- do_hilitedelay();
-
- unhilite(item1);
- unhilite(item2);
- do_unhilitedelay();
- }
- else {
- drawitem(item1);
- drawitem(item2);
- }
- numexchanges++;
- }
-
-
- pascal void FrameUserProc(DialogPtr dialog, short itemNo)
- {
- auto short itemType;
- auto Handle itemHandle;
- auto Rect itemRect;
-
- SetPort(dialog);
- GetDItem(dialog, itemNo, &itemType, &itemHandle, &itemRect);
- PenSize(3,3);
- FrameRoundRect(&itemRect, 17, 17);
- }
-
-